#pragma once
#include<iostream>
#include<pthread.h>
#include"Lock.hpp"
class Cond
{
    public:
    Cond()
    {
        pthread_cond_init(&cond,nullptr);
    }
    void Wait(Mutex& mutex)
    {
        pthread_cond_wait(&cond,mutex.GetmMutexOriginal());
    }
    void Notify()
    {
        //唤醒当前条件变量下的一个线程
        //至于是哪个线程由调度器决定
        pthread_cond_signal(&cond);
    }
    void Notifyall()
    {
        pthread_cond_broadcast(&cond);
    }
    ~Cond()
    {
        pthread_cond_destroy(&cond);
    }
    private:
    pthread_cond_t cond;
};